package cl.mt.mvc.action.oferente;

import java.util.Collection;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionRedirect;

import cl.mt.dto.DTOOfertaCarga;
import cl.mt.dto.DTOPostulacion;
import cl.mt.dto.DTOUsuario;
import cl.mt.dto.filtros.FiltroCargaDTO;
import cl.mt.helper.OfertaCargaHelper;
import cl.mt.mvc.helper.VehiculosHelper;



public class OfertaCargaAction extends Action {
	private Logger log = LogManager.getLogger(OfertaCargaAction.class.getName());
	
	  public ActionForward execute (ActionMapping mapping, ActionForm form,

          HttpServletRequest request, HttpServletResponse response) {
			
		  String forward= "ERROR";
		  log.debug("OfertaCargaAction..........");
		
		  String isLogin=  request.getSession().getAttribute("LoginOK")=="ok" ? "nok" :(String) request.getSession().getAttribute("LoginOK");
		  log.debug("Login de session en OfertaCargaAction["+isLogin+"] ");
		 /* if (!isLogin.equals("ok")) {
			  ActionRedirect redirect =new ActionRedirect(mapping.findForward("inicio"));
		     return redirect;
		  }*/
		  
		  
		  
		  
		  String accion= request.getParameter("accion");
		  log.debug("campo accion:["+accion+"]");
		  OfertaCargaHelper helper = new OfertaCargaHelper();
		  
		  if ("verOfertas".equals(accion) || accion==null){
			 
			  log.debug("cargar info para el formulario.");
			 String tipoFiltro= request.getParameter("tipoFiltro")==null ? "Vigente" : request.getParameter("tipoFiltro");
			 DTOUsuario userLogin = (DTOUsuario) request.getSession().getAttribute("userLogin");
			 
			 String selectedTipoFiltroHis = tipoFiltro.equals("Historico") ? "selected" : "";
			 String selectedTipoFiltroVig = tipoFiltro.equals("Vigente") ? "selected" : "";
			 
			  FiltroCargaDTO filtro = new FiltroCargaDTO(tipoFiltro, userLogin.getId());
			  List resultado = helper.getOfertaFiltro(filtro);
			  log.debug("cantidad de ofertas["+resultado.size()+"]");
			  request.setAttribute("resultadoFiltro", resultado);
			  request.setAttribute("selectedTipoFiltroVig", selectedTipoFiltroVig);
			  request.setAttribute("selectedTipoFiltroHis", selectedTipoFiltroHis);
			  forward="SUCCESS";
		
		  
		  }else if ("filtroCarga".equals(accion)){
			  log.debug("busca info Segun Criterios.");
			   
			  FiltroCargaDTO filtro = buscaParametrosRequest(request);
			  String selectedTipoFiltroHis = filtro.getTipoFiltro().equals("Historico") ? "selected" : "";
			  String selectedTipoFiltroVig = filtro.getTipoFiltro().equals("Vigente") ? "selected" : "";
				
			 
			  List resultado = helper.getOfertaFiltro(filtro);
			  log.debug("cantidad de vehiculos Disponibles["+resultado.size()+"]");
			  
			  request.setAttribute("selectedTipoFiltroVig", selectedTipoFiltroVig);
			  request.setAttribute("selectedTipoFiltroHis", selectedTipoFiltroHis);
			  request.setAttribute("resultadoFiltro", resultado);
			  
			  log.debug("Datos del filtro:"+filtro.toString());
			  
			  forward="SUCCESS";
		  
		  
		  }else if ("verDetalle".equals(accion)){
			  log.debug("busca info Segun verDetalle.");
	
			  Integer id = new Integer(request.getParameter("idOc"))	;
			  DTOOfertaCarga dto = helper.findByCodigo(id);
			  
			  request.setAttribute("ocDetalle", dto);
			
			  forward="DETALLE";
		  
		  
		  }else if ("ForDelete".equals(accion)){
			  log.debug("busca info Segun borrar.");
	
			  Integer id = new Integer(request.getParameter("idOc"))	;
			  DTOOfertaCarga dto = helper.findByCodigo(id);
			  
			  request.setAttribute("ocDetalle", dto);			
			  forward="ELIMINAR";
		  
			  
		  }else if ("delete".equals(accion)){ 
			  log.debug("busca info Segun borrar.");
	
			  Long  id = new Long(request.getParameter("idOc"))	;
			  int retorno= helper.deleteByCodigo(id);
			  
			  log.debug("Delete ofertaCarga["+id+"]"+retorno);
			 
			
			  forward="ELIMINAR";
		  
		  
		  }else if ("verPost".equals(accion)){ 
			  log.debug("busca info Segun verPost.");
			  String idoc= request.getParameter("idOc");
			  List<DTOPostulacion> post= helper.getListaPostulaciones(idoc);
			  request.setAttribute("idOfertaCarga", idoc);
			  request.setAttribute("listPostulacion", post);
			  
			  forward="POSTULACION";
		  
		  
		  }else if ("verPostDetalle".equals(accion)){ 
			  log.debug("busca info verPostDetalle.");
			  VehiculosHelper vHelper = new VehiculosHelper();

			  DTOUsuario userLogin = (DTOUsuario) request.getSession().getAttribute("userLogin");
			  String idoc= request.getParameter("idpOc");
			  DTOPostulacion post= vHelper.getInfoVehiculoPostulacion(idoc);
			  
			  request.setAttribute("detalle", post);
			  request.setAttribute("idOfertaCarga", idoc);
			  forward="DETALLE_POSTULACION";
		  
		  
		  }else{
			  
			  log.debug("No hay accion a ejecutar.");
			  forward="SUCCESS";
		  }
		  
			  return mapping.findForward(forward);
		  
		  
	  }

	private FiltroCargaDTO buscaParametrosRequest(HttpServletRequest request) {
			FiltroCargaDTO filtro = new FiltroCargaDTO();
			DTOUsuario user = (DTOUsuario) request.getSession().getAttribute("userLogin");
			filtro.setIdUser(user.getId().hashCode());
			filtro.setTipoFiltro(request.getParameter("tipoFiltro"));
			filtro.setFechaDesde(request.getParameter("fechaDesde"));
			filtro.setFechaHasta(request.getParameter("fechaHasta"));
			filtro.setPaisDestino(request.getParameter("paisDestino"));
			filtro.setPaisOrigen(request.getParameter("paisOrigen"));
			
			filtro.setRegionDestino(request.getParameter("regionDestino"));
			filtro.setRegionOrigen(request.getParameter("regionOrigen"));
			
			filtro.setPaisOrigen(request.getParameter("paisOrigen"));
			filtro.setPaisOrigen(request.getParameter("paisOrigen"));
			filtro.setTipoFiltro(request.getParameter("tipoFiltro"));
			
		log.debug("datos del filtro:"+filtro.toString());
		return filtro;
	}
	
	
	
	
	

}
